

### NSPanel (面板)

> 它是window的子类,一般用于辅助功能,行为也和普通窗口有所不同

1. 面板可以成为 "keyWindow" 但是不能成为 "mainWindow" . NSApplication有一个keyWindow和mainWindow，除非应用了面板否则这两个IBOutlet都指向同一窗口。 NSPanel不会成为主窗口

2. 如果面板有关闭按钮可以按esc退出面板。
    面板不会出现在Window菜单的窗口列表中。毕竟用户查找窗口一般就是查找文档，而不是面板。

>  所有的窗口有一个叫'hidesOnDeactivate（无效时隐藏）'的BOOL变量. 控制窗口在程序不活动的时隐藏。这个机制使得屏幕不那么乱。




### 关于File's ownner 

创建空的xib，选中 file`s ownner 。关联类 PreferenceController

当nib被载入一个已经运行了一段时间的程序中时,现存的对象需要与nib中读出的对象建立一定的连接。

file`s owner 提供了连接功能。"File's ownner 其实就是文件载入前就已经存在于对象中的占位符",载入nib文件对象需要提供所有者对象


需要注意的是新建了 'PreferenceController' , 而Preference.xib的ownner为 'PreferenceController'。 里面的内容部分为 'NSPanel'



### 补充:关于NSBundle 

Bundle是用于程序中的资源目录。资源包括声音、文字、编译完的代码和Nib文件。 (用户也经常用plug-in来代替bundle，即插件)。
NSBundle是Cocoa中处理bundle的一个专门的类。
应用程序其实就是一个bunlde . 在finder中，应用程序和其他文件看起来差不多。但是实际上是一个包含着编译完代码、nib文件和其他资源的目录。这个被称作是mainBundle.

Bundle中的某些资源可以进行本地化处理。例如两个版本的foo.nib ，一个为英语用户、一个为法语用户。因为bundle就应该有两个子目录english.lproj和french.lproj。开发者在两个目录下放合适的foo.nib文件。当程序请求加载foo.nib时，bundle自动为法语用户选择法语。。

"简单操作":











